System interconnection models describe three layers controlling aspects of data transmission: transaction layer, data link layer, and physical layer. Each layer independently performs tasks to successfully transmit data from a source device to a target device. The transaction layer, for example, may comprise a packet-based protocol to packetize or encapsulate data for transmission. The packet-based protocol sizes the packets of data to optimize transmission through several network devices. The data link layer inserts packet sequence numbers and error verification data, such as idle characters, referred to as an idle symbol, and checksums, to verify data integrity during the transmission. Lastly, the physical layer reformats the data to optimize transmission of the data across a physical interconnection, or communication medium, and a physical layer at the target device reassembles the data.
The link layers at the source device and target device maintain data integrity by performing verifications of the data such as disparity and checksum verifications. Disparity verifications monitor a running disparity of a data transmission. For example, an eight bit/ten bit (8 b/10 b) encoding scheme balances the count of logical ones and logical zeros so that the numbers of each are substantially equivalent. When ten bits are sent having more logical ones than logical zeros, a subsequent transmission will have more logical zeros than ones, flipping the running disparity from more logical ones to more logical zeros, or from one heavy or to zero heavy. When ten bits are sent with equal numbers of ones and zeroes, such a symbol is said to have “neutral” disparity. In some situations, a large number of neutral symbols are transmitted between non-neutral symbols so the source link layer artificially inserts idle symbols to flip the disparity. The target link layer constantly monitors the change in disparity. When the disparity changes inappropriately, an error is assumed to have corrupted the data. Similarly, in checksum verifications, a source device incorporates data, called a checksum, into a data transmission comprising a summation of logical zeros and/or logical ones. The target device's link layer receives the checksum and compares it to a summation maintained by the target device. When the summations do not match, an error is assumed to have occurred in the data transmitted since the last checksum. In response, the target device may either request a retransmission of the data since the last checksum or simply discard the received data.
The number of idle symbols for disparity checks or checksums inserted into the data stream affects the bandwidth of the communication medium and the latency of the data transmission. The bandwidth of a communication medium is a measure of the amount of data that can transmit between a source device and a target device via a communication medium. The latency of a data transmission across that medium is a measure of the average amount of time that elapses between requesting the transmission of data at the source device and verification of the data by the target device, allowing the target device to use the data, and is adversely affected when error verification data is not transmitted often enough. Link layers typically insert error verification data at a fixed frequency or transaction layers embed the data directly into the packets. However, transmitting the error verification data at a fixed frequency or embedding the error verification data into the packets does not take into account the link loading that determines the amount of time it takes for the receiving link layer to verify and use data transmitted. Thus, the fixed frequency or embedded data may be sent too often, such as when the link is heavily loaded, severely impacting the link bandwidth. On the other hand, link integrity information may not be sent often enough in some cases when the link is lightly loaded. This adversely affects latency.